Broadly speaking, virtualization is the abstraction of computing resources such as storage devices, processors, networking, and memory. Virtualized computing environments provide interfaces to software applications where the actual structure of underlying computing resources is hidden from the software applications. For example, virtualization may be used to make multiple computing resources appear to software applications as a single computing resource, or may be used to make a single computing resource appear to software applications as multiple computing resources.
Using virtualization to make multiple computing resources appear as a single computing resource is commonly referred to as ‘resource pooling.’ Resource pooling may be as simple as spanning multiple hard disks in a single computer system to create a single volume. Resource pooling may also be used to combine resources from multiple computer systems. For example, supercomputers often use resource pooling to draw processing capability from a cluster of computer systems. Many different types of resource pooling exist.
Using virtualization to make a single computing resource appear as multiple computing resources is commonly referred to as ‘virtual partitioning’ or ‘zoning.’ For example, Sun Solaris™ provides zoning capabilities at the operating system level using Solaris™ Containers. Each Solaris™ Container may be configured to act as an isolated virtual server, though multiple Solaris™ Containers may be executing in a single computer system. Solaris™ is a trademark of Sun Microsystems in Menlo Park, Calif. Many different types of virtual partitioning exist.
Resource pooling and virtual partitioning may also be combined. For example, computing resources from multiple computer systems may be pooled and then partitioned as needed. The partitions need not conform to the underlying hardware boundaries. Thus, partitioning of pooled resources allows for flexible control over the use of available computing resources.
When resource pooling and/or virtual partitioning are used, software applications executing in the virtualized environment may be required to satisfy virtualization requirements. For example, Solaris™ Containers share a single operating system kernel. If a software application that modifies the kernel were allowed to execute in a Solaris™ Container, the modification might adversely affect other Solaris™ Containers sharing the same kernel. Therefore, write access to the kernel is typically prohibited within Solaris™ Containers. Generally speaking, because virtualization relies on abstraction boundaries, software applications are restricted from crossing those boundaries.